/*----------------------------------------------------------------------------*\
|
|						Public Interface to Muse Technology
|
|							     www.Muse.com
| Author : SunJun 
| Email : sundoom@msn.com
\*----------------------------------------------------------------------------*/

//////////////////////////////////////////////////////////////////////////
// $Id: Texture.h,v 1.2 2009/04/03 12:51:25 sunjun Exp $
//////////////////////////////////////////////////////////////////////////

#ifndef __Texture__
#define __Texture__

//////////////////////////////////////////////////////////////////////////

#if defined __cplusplus

//////////////////////////////////////////////////////////////////////////

#include <Context.h>

//////////////////////////////////////////////////////////////////////////

NAMESPACE_BEGIN

//////////////////////////////////////////////////////////////////////////

	// this class provides an object-oriented texture interface.
	class API Texture : public MReference
	{
	public:
		enum TextureType
		{
			TT_TEXTURE,
			TT_VOLUME,
			TT_CUBEMAP
		};

	public:
		// constructor
		Texture( const Context* rc );
		
		// destructor
		virtual ~Texture();

		// get the handle
		INLINE HANDLE handle() const;

		// load the data
		virtual VOID load( const VOID* data, U32 size );
		
	protected:
		ContextPtr mRCPtr;
		HANDLE mHandle;
		U32 mType;

	private: friend class Primitive;
	};	

	typedef MPtr<Texture>TexturePtr;

//////////////////////////////////////////////////////////////////////////

NAMESPACE_END

//////////////////////////////////////////////////////////////////////////

#endif // __cplusplus

//////////////////////////////////////////////////////////////////////////

#endif // __Texture__

//////////////////////////////////////////////////////////////////////////